 
import setting  from "./config.js";
// 11111111111111111
export default {
	config: {
		// baseURL: "http://172.18.3.8:8090",  // setting.IS_DEV ? setting.DEV_URL : setting.PRO_URL, 
		baseURL: setting.IS_DEV ? setting.DEV_URL : setting.PRO_URL, 
		header: {
			// 'Content-Type': 'application/json;charset=UTF-8',
			// 'Content-Type': 'application/x-www-form-urlencoded'
		},
		custom: {
			// 请求接口展示Loading
			ShowLoading: false,
			// Loading中是否遮罩
			LoadingMask: false,
			// Loading文本
			LoadingText:'',
			// setting.LOADING_TEXT,
		},
		dataType: "json",
		/* 如设为json，会对返回的数据做一次 JSON.parse */
		responseType: "text",
		// #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN
		timeout: 10000,
		// setting.TIMEOUT,
		// #endif
		// #ifdef APP-PLUS
		// 验证 ssl 证书 仅5+App安卓端支持（HBuilderX 2.3.3+）
		sslVerify: true,
		// #endif
		// #ifdef H5
		// 跨域请求时是否携带凭证（cookies）仅H5支持（HBuilderX 2.6.15+）
		withCredentials: false,
		// #endif
		// #ifdef APP-PLUS
		// DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+)
		firstIpv4: false,
		// #endif
	},
	get(url, data, options) {
		if (!options) {
			options = {}
		}
		options.url = url
		options.data = data
		options.method = 'GET'
		return this.request(options)
	},
	post(url, data, options) {
		if (!options) {
			options = {}
		}
		options.url = url
		options.data = data
		options.method = 'POST' 
		return this.request(options)
	},
	request(options) {
		// console.log(options)
		//请求前处理，相当于请求拦截
		let config = Object.assign(this.config, options); //合并全局配置及局部配置项
		//加载提示
		if (config.custom.ShowLoading) {
			uni.showLoading({
				title: config.custom.LoadingText || '正在加载',
				mask: config.custom.LoadingMask || false
			});
		}
		config.url = config.baseURL + config.url
		config.data = config.data || {}

		//如果token不为空则请求时携带token
		let _token = uni.getStorageSync('token') || ''
		if (_token != '' && _token != undefined) {
			config.header['Token'] = 'Bearer ' + _token
		} else {
			config.header['Token'] = ''
		}   
		
		// 门店信息：品牌编号codebrandCode  门店编号orgCode
		let brandCode = uni.getStorageSync('shopInfo').brandCode || ''
		let orgCode = uni.getStorageSync('shopInfo').orgCode || ''
		if (brandCode != '' && brandCode != undefined && orgCode != '' && orgCode != undefined) {
			config.data['brandCode'] = brandCode
			config.data['orgCode'] = orgCode
		} else {
			config.data['brandCode'] = ''
			config.data['orgCode'] = ''
		} 
		
		// config.data['timestamp'] = Math.round(new Date() / 1000); //时间戳;

		// 是否开启请求日志
		// if (setting.REQUEST_LOG) {
		// 	_reqlog(config)
		// }
		
		// 后端返回的api结构比较多种-建议后端统一规则
		return new Promise((resolve, reject) => {
			uni.request(config).then(response => {   
				const { data, errMsg, statusCode } = response  
				console.log('data:',data)
				//结束loading提示
				if (config.custom.ShowLoading) {
					uni.hideLoading();
				} 
				//是否开启响应日志
				// if (setting.REQUEST_LOG) {
				// 	_reslog(res)
				// }
				if(statusCode === 200){  
					let result = ''  
					let flag = false 
					try{
						if(config.url.includes('AppMemberMallProcess')){
							if(data.opFlag === "1"){ 
								resolve((data)) // resolve((data.content.rowData)) 分页的total在最外层
								return
							}else{
								uni.showToast({
									title: data.opMsg,
									icon: 'none'
								})
								reject()
								return
							} 
						} 
					}catch(e){
						//TODO handle the exception
					} 
					
					try{ 
						flag = (config.url.includes('HFiveMemberAppObjProcess'))
					}catch(e){
						//TODO handle the exception
					} 
					if(flag){ 
						try{
							result =  data.data ?  JSON.parse(data.data) : '' 
						}catch(e){
							result =  data
						}
						
					}else{
						if(data.data) {
						    result = data.data 
						} 
					}
					if(data.opFlag === "1"){ 
						resolve(result)
					}else{
						uni.showToast({
							title: data.opMsg,
							icon: 'none'
						}); 
						reject(data.data)
					} 
				}else{ 
				    uni.showToast({
				    	title: '请求失败',
				    	icon: 'none'
				    })
					reject()
				} 
			 }).catch(error => { 
				let { errMsg } = error
				if (errMsg === 'Network Error') {
					errMsg = '后端接口连接异常' // 服务器开小差啦,请稍后再试~
				} else if (errMsg.includes('timeout')) {
					errMsg = '系统接口请求超时'
				} else if (errMsg.includes('Request failed with status code')) {
					errMsg = '系统接口' + errMsg.substr(errMsg.length - 3) + '异常'
				} 
				uni.showToast({ title: errMsg, icon: 'none' }) // toast(message)
				reject(error)
			});
			
		})
	},
}
/**
 * 请求接口日志记录
 */
// //请求日志
// function _reqlog(req) {
// 	console.log("请求地址：" + req.url)
// 	// uni.showToast({ icon: 'none', title: '请求地址' + req.url, 	duration: 10000  })
// 	console.log("请求参数：" + JSON.stringify(req.data))
// }
// //响应日志
// function _reslog(res) {
// 	console.log("响应结果：" + JSON.stringify(res))
// }